No — the user might want to see the value of the polynomial when x is 0.0. Any other value has the same problem. It is also dangerous to test for exact equality with double precision.
In this program, no special number is suitable as a sentinel because any number is potential data. Because of this, there must be a prompt that asks if the user wants to continue, and another prompt that asks for data.
Here is an outline of the program:
class EvalPoly
{
public static void main (String[] args )
{
double x; // a value to use with the polynomial
String response = "y"; // "y" or "n"
while ( response.equals("y") )
{
// Get a value for x.
// Evaluate the polynomial.
// Print out the result.
// Ask the user if the program should continue.
// Put the answer in the String "response" points to
}
}
}
It is often useful to work on one aspect of a program at a time. Let us first look at the "prompting and looping" aspect and temporarily ignore the polynomial evaluation aspect.
The condition part of the while
statement, response.equals("y")
evaluates to true or false.
Here is how this happens:
response
is a reference to a String object.response
is the characters the user types.response
has an
equals()
method that tests if
another String is equal to this String.response.equals("y")
tests if the String pointed to by response
(what the user entered)
is equal to the String "y".
In other words, response.equals("y")
asks: did the user type exactly a "y"?
If the user types "yes" will the program continue?